home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / infoplus.zip / PAGE_10.INC < prev    next >
Text File  |  1990-06-25  |  4KB  |  157 lines

  1. procedure page_10;
  2.  
  3. var
  4.   i : 1..63;
  5.   xbool1 : boolean;
  6.   xbool2 : boolean;
  7.   xbool3 : boolean;
  8.   xchar : char;
  9.   xword1: word;
  10.  
  11. procedure muxint(a : string; b : byte);
  12.  
  13. begin
  14. caption3(a);
  15.   with regs do begin
  16.     AH:=b;
  17.     AL:=0;
  18.     intr($2F, regs);
  19.     case AL of
  20.       $00 : writeln('no; OK to load');
  21.       $01 : writeln('no; not OK to load');
  22.       $FF : writeln('yes')
  23.       else
  24.         unknown('status', AL, 2)
  25.     end
  26.   end
  27. end;
  28.  
  29. begin (* procedure page_10 *)
  30.   with regs do
  31.     begin
  32.     AX:=$3800;
  33.     DS:=seg(country);
  34.     DX:=ofs(country);
  35.     MSDOS(regs);
  36.     end;
  37.   caption2('Multiplex interrupt ($2F)');
  38.   writeln;
  39.   muxint('DOS            ', $12);
  40. { muxint('DRIVER.SYS     ', $08);}
  41.   muxint('DISPLAY.SYS    ', $B0);
  42.   muxint('ANSI.SYS       ', $1A);
  43.   muxint('PRINT          ', $01);
  44.   muxint('ASSIGN         ', $06);
  45. (*
  46. **  Byte 12:12 p. 176C, Duncan, and many others, all of whom mistakenly give
  47. **  AH = $02
  48. *)
  49.   muxint('SHARE          ', $10);
  50. (*  muxint('FASTOPEN       ', $xx);*)
  51.   muxint('NLSFUNC        ', $14);
  52.   muxint('GRAFTABL       ', $B0);
  53. (*  muxint('KEYB           ', $B8);*)
  54.   muxint('NETBIOS append ', $87);
  55.   muxint('NETBIOS network', $88);
  56.   muxint('CD-ROM         ', $15);
  57. (*  Byte 12:12 p. 180.  PC Tech Journal 3:11 p.104 gives AH = $BB  *)
  58.   muxint('SHELLB         ', $19);
  59.   muxint('XMA2EMS        ', $1B);
  60.   muxint('APPEND         ', $B7);
  61.   caption3('JP Software''s 4DOS');
  62.   with regs do
  63.     begin
  64.     AX:=$D44D;
  65.     BX:=0;
  66.     Intr($2F, regs);
  67.     if AX <> $44DD then
  68.       Writeln('no')
  69.     else
  70.       begin
  71.       Writeln('yes');
  72.       caption3('  version');
  73.       xword1:=BH;
  74.       Write(BL, Chr(country[9]));
  75.       zeropad(xword1);
  76.       caption3('shell no.');
  77.       Writeln(DL);
  78.       caption3('  4DOS PSP segment');
  79.       Write(hex(CX, 4))
  80.       end
  81.     end;
  82.   window(1 + twidth div 2, 3, twidth, tlength - 2);
  83.   if osmajor >=4 then
  84.     with regs do
  85.       begin
  86.       AX:=$B700;
  87.       Intr($2F, regs);
  88.       if AL=$FF then
  89.         begin
  90.         caption2('APPEND ');
  91.         AX:=$B706;
  92.         Intr($2F, regs);
  93.         if (BX and 1) = 1 then
  94.           Write('enabled ');
  95.         if (BX and $2000) = $2000 then
  96.           Write('/PATH ');
  97.         if (BX and $4000) = $4000 then
  98.           Write('/E ');
  99.         if (BX and $8000) = $8000 then
  100.           Write('/X');
  101.         Writeln;
  102.         caption2('APPEND path');
  103.         AX:=$B704;
  104.         Intr($2F, regs);
  105.         while Mem[ES:DI] <> 0 do
  106.           begin
  107.           Write(Chr(mem[ES:DI]));
  108.           Inc(DI)
  109.           end;
  110.         Writeln
  111.         end
  112.       end;
  113.   with regs do begin
  114.     AX:=$0100;
  115.     intr($2F, regs);
  116.     if AL = $FF then begin
  117.       caption2('PRINT queue');
  118.       AX:=$0104;
  119.       intr($2F, regs);
  120.       xbool1:=true;
  121.       xbool2:=false;
  122.       repeat
  123.         xchar:=char(mem[DS : SI]);
  124.         if xchar > #0 then begin
  125.           if xbool1 then begin
  126.             xbool1:=false;
  127.             writeln;
  128.             window(2 + twidth div 2, wherey + hi(windmin), twidth, tlength - 2)
  129.           end;
  130.           pause2;
  131.           if endit then
  132.             Exit;
  133.           write(xchar);
  134.           i:=1;
  135.           xbool3:=false;
  136.           repeat
  137.             xchar:=char(mem[DS : SI + i]);
  138.             if xchar > #0 then begin
  139.               write(xchar);
  140.               inc(i)
  141.             end else begin
  142.               writeln;
  143.               xbool3:=true
  144.             end
  145.           until xbool3;
  146.           inc(SI, 64)
  147.         end else
  148.           xbool2:=true
  149.       until xbool2;
  150.       if xbool1 then
  151.         writeln('(empty)');
  152.       AX:=$0105;
  153.       intr($2F, regs)
  154.     end
  155.   end
  156. end;
  157.